/cody/pratham0709/Striver-A-TO-Z-SDE-SHEET/Binary%20Search/BS%20On%20Answer/Book%20Allocation%20Problem.cpp
class Solution {public:    int countStudents(vector<int> &nums, int k) {    int n = nums.size(); //size of array.    int students = 1;    long long pagesStudent = 0;    for (int i = 0; i < n; i++) {        if (pagesStudent + nums[i] <= k) {            //add pages to current student            pagesStudent += nums[i];        }        else {            //add pages to next student            students++;            pagesStudent = nums[i];        }    }    return students;}                    int splitArray(vector<int>& nums, int k) {    int n = nums.size();    if (k > n) return -1;
    int low = *max_element(nums.begin(), nums.end());    int high = accumulate(nums.begin(), nums.end(), 0);    while (low <= high) {        int mid = (low + high) / 2;        int students = countStudents(nums, mid);        if (students > k) {            low = mid + 1;        }        else {            high = mid - 1;        }    }    return low;    }};